<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>QSculpt: ISurface Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">QSculpt
   &#160;<span id="projectnumber">0.0.1a</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#signals">Signals</a> &#124;
<a href="#pub-methods">Public Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">ISurface Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="ISurface" -->
<p><code>#include &lt;<a class="el" href="_i_surface_8h_source.html">ISurface.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ISurface:</div>
<div class="dyncontent">
 <div class="center">
  <img src="class_i_surface.png" usemap="#ISurface_map" alt=""/>
  <map id="ISurface_map" name="ISurface_map">
<area href="class_subdivision.html" alt="Subdivision" shape="rect" coords="174,56,251,80"/>
<area href="class_box.html" alt="Box" shape="rect" coords="0,112,77,136"/>
<area href="class_mesh.html" alt="Mesh" shape="rect" coords="87,112,164,136"/>
<area href="class_plane.html" alt="Plane" shape="rect" coords="174,112,251,136"/>
<area href="class_quad.html" alt="Quad" shape="rect" coords="261,112,338,136"/>
<area href="class_sphere.html" alt="Sphere" shape="rect" coords="348,112,425,136"/>
</map>
 </div></div>

<p><a href="class_i_surface-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="signals"></a>
Signals</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70b87c2fbe3c08233495f25180dc884f"></a><!-- doxytag: member="ISurface::meshChanged" ref="a70b87c2fbe3c08233495f25180dc884f" args="(ISurface *mesh)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>meshChanged</b> (<a class="el" href="class_i_surface.html">ISurface</a> *mesh)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada36673fcd9fd98edd40a302265ad705"></a><!-- doxytag: member="ISurface::positionChanged" ref="ada36673fcd9fd98edd40a302265ad705" args="(float x, float y, float z)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>positionChanged</b> (float x, float y, float z)</td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#ab70567ef2d1f791659441e6d511d5181">ISurface</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual uint&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#ae78b51ad4cf1dd2eea18ed5b386d80f4">iid</a> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a961e29f03db6364c41423e6ed0882e56"></a><!-- doxytag: member="ISurface::setScene" ref="a961e29f03db6364c41423e6ed0882e56" args="(Scene *scene)=0" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>setScene</b> (<a class="el" href="class_scene.html">Scene</a> *scene)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5dc0a5943e60b833a35d0054c962ad09"></a><!-- doxytag: member="ISurface::getScene" ref="a5dc0a5943e60b833a35d0054c962ad09" args="() const =0" -->
virtual <a class="el" href="class_scene.html">Scene</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>getScene</b> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a1a37c46d3bdaf293185528b126d9414f">setPosition</a> (float x, float y, float z)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#abf512c806506d38121bd19b5945edfa5">setPosition</a> (const Point3 &amp;position)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a325e898d81895706e22e331a778beafa">getPosition</a> (float *x, float *y, float *z) const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual Point3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a3f218240367586c7ff7078e991a06060">getPosition</a> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#affbd60ef9ed26e01b55c28facc8bdd8b">displace</a> (const Point3 &amp;delta)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a1b2bcf36d9260ff21b27519e6da7a715">setOrientation</a> (float rotX, float rotY, float rotZ)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a8f10a9bc973d60aba70cfc51b8a28f33">orientation</a> (float &amp;rotX, float &amp;rotY, float &amp;rotZ)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0911442286e0df0d53fb4d56962f135a"></a><!-- doxytag: member="ISurface::transform" ref="a0911442286e0df0d53fb4d56962f135a" args="() const =0" -->
virtual Eigen::Affine3f&#160;</td><td class="memItemRight" valign="bottom"><b>transform</b> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a404f0a0562e136e78879cdb42f18bc30"></a><!-- doxytag: member="ISurface::transform" ref="a404f0a0562e136e78879cdb42f18bc30" args="()=0" -->
virtual Eigen::Affine3f &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>transform</b> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2c45647da463e881df312796db78398"></a><!-- doxytag: member="ISurface::setTransform" ref="aa2c45647da463e881df312796db78398" args="(const Eigen::Affine3f &amp;transform)=0" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>setTransform</b> (const Eigen::Affine3f &amp;transform)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual const <a class="el" href="classgeometry_1_1_a_a_b_b.html">geometry::AABB</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a571d61b4e42945db601315b308ce0480">getBoundingBox</a> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#af199f348a53404b2a9afe4d53320967d">setColor</a> (const <a class="el" href="class_color.html">Color</a> &amp;color)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_color.html">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#aa10cc801aa8f0ce9ccfada6a201b8978">getColor</a> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a308ae3492b08adf81eb71603cc9c9e77">setSelected</a> (bool val)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a62c36e72a939cc47af4fb7f5a8e7129b">isSelected</a> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#acbc361660b6540a54e7756ffa65dcf58">addVertex</a> (const Point3 &amp;point)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a67e08909ca9ac1a6514d21601586e084">addVertex</a> (<a class="el" href="class_vertex.html">Vertex</a> *v)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#acb9d7fe923011c6fabe64499e2fad39c">removeVertex</a> (int id)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_vertex.html">Vertex</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#aec9d88f3e524a8c7744643f7ad2a8a6d">getVertex</a> (int iid)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual const <a class="el" href="class_vertex.html">Vertex</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#af86f540d2ce7ff69a8fa0f691b43854e">getVertex</a> (int iid) const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a494fde936bf15d00021ef4ed6ea50917">getNumVertices</a> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a08731d016e3e56c8d7b9f2dc6ac62ff7"></a><!-- doxytag: member="ISurface::addEdge" ref="a08731d016e3e56c8d7b9f2dc6ac62ff7" args="(const Edge &amp;edge)=0" -->
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>addEdge</b> (const <a class="el" href="class_edge.html">Edge</a> &amp;edge)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4ea9122f8286798af793e5467701ba2"></a><!-- doxytag: member="ISurface::addEdge" ref="aa4ea9122f8286798af793e5467701ba2" args="(int v1, int v2)=0" -->
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>addEdge</b> (int v1, int v2)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a91e7fbc0464488d68c3515a17fae1cf2">addFace</a> (const QVector&lt; int &gt; &amp;vertexIndexes)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a20192dad54574165894e55cfe0dcb857">replaceFace</a> (int index, const QVector&lt; int &gt; &amp;vertexIndexList)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#af50649c2dc98f48ce58ab67700a58952">removeFace</a> (int id)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a6b377d95b29a4605f8788df6a4a10aa1">getNumFaces</a> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_face.html">Face</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#af65eb6a9c34d69b4901f4ec0b38ba575">getFace</a> (int index)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73357c42295e486f8488052519b047f4"></a><!-- doxytag: member="ISurface::getFaceIndexAtPoint" ref="a73357c42295e486f8488052519b047f4" args="(const Point3 &amp;p) const =0" -->
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>getFaceIndexAtPoint</b> (const Point3 &amp;p) const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4bf99a2c4d96c1061b5725fc5bf39b68"></a><!-- doxytag: member="ISurface::getClosestPointAtPoint" ref="a4bf99a2c4d96c1061b5725fc5bf39b68" args="(const Point3 &amp;p) const =0" -->
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>getClosestPointAtPoint</b> (const Point3 &amp;p) const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6c0787eef6ed135931b2906feafde9a4"></a><!-- doxytag: member="ISurface::getPointsInRadius" ref="a6c0787eef6ed135931b2906feafde9a4" args="(const Point3 &amp;p, float radius) const =0" -->
virtual QVector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>getPointsInRadius</b> (const Point3 &amp;p, float radius) const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31273bfa09b47f7c1e0b692e0e9f15dd"></a><!-- doxytag: member="ISurface::adjustPointNormal" ref="a31273bfa09b47f7c1e0b692e0e9f15dd" args="(int index)=0" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>adjustPointNormal</b> (int index)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a79815364bb095c8f7874cc5bf00e0477"></a><!-- doxytag: member="ISurface::lock" ref="a79815364bb095c8f7874cc5bf00e0477" args="() const =0" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>lock</b> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c6452333311a071ad06876d951cf63e"></a><!-- doxytag: member="ISurface::unlock" ref="a1c6452333311a071ad06876d951cf63e" args="() const =0" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>unlock</b> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a14005fd3b7ec9d1c56ad8ece5b59f991"></a><!-- doxytag: member="ISurface::addResolutionLevel" ref="a14005fd3b7ec9d1c56ad8ece5b59f991" args="()=0" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>addResolutionLevel</b> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a737c9d381c5daddb7616e0918b600438"></a><!-- doxytag: member="ISurface::removeResolutionLevel" ref="a737c9d381c5daddb7616e0918b600438" args="(int level)=0" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>removeResolutionLevel</b> (int level)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac39d6e7a597aaa9e2d9afd83f375e008"></a><!-- doxytag: member="ISurface::setWorkingResolutionLevel" ref="ac39d6e7a597aaa9e2d9afd83f375e008" args="(int level)=0" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>setWorkingResolutionLevel</b> (int level)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca14fe593d20e1fc9836410e86923813"></a><!-- doxytag: member="ISurface::getWorkingResolutionLevel" ref="aca14fe593d20e1fc9836410e86923813" args="()=0" -->
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>getWorkingResolutionLevel</b> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a6e0d4a5e3fcc3d79d02ed7924fb7faee">hasChanged</a> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af76ece8998133ea0151f1d899ab09235"></a><!-- doxytag: member="ISurface::setChanged" ref="af76ece8998133ea0151f1d899ab09235" args="(bool val)=0" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>setChanged</b> (bool val)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac56cbc86af7b77fc1cb0bc10eb18ba6f"></a><!-- doxytag: member="ISurface::getSelectedPoints" ref="ac56cbc86af7b77fc1cb0bc10eb18ba6f" args="() const =0" -->
virtual QVector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>getSelectedPoints</b> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6c0aab9995949204666b421a085674dd"></a><!-- doxytag: member="ISurface::setSelectedPoints" ref="a6c0aab9995949204666b421a085674dd" args="(const QVector&lt; int &gt; &amp;indicesArray)=0" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>setSelectedPoints</b> (const QVector&lt; int &gt; &amp;indicesArray)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_vertex.html">Vertex</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a852184671d98db33f9160b40f5aa5e76">vertexIterator</a> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a190d8639cb35aedd1f4162608f12d7fa"></a><!-- doxytag: member="ISurface::constVertexIterator" ref="a190d8639cb35aedd1f4162608f12d7fa" args="() const =0" -->
virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_vertex.html">Vertex</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>constVertexIterator</b> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_face.html">Face</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a42b6325545e89a172a7d0585b9f03f2d">faceIterator</a> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_face.html">Face</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a67a32caec0e8d348a10eecf6f7c2c3a4">constFaceIterator</a> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0426e0e4f0eae725f39913ef56f652d0"></a><!-- doxytag: member="ISurface::edgeIterator" ref="a0426e0e4f0eae725f39913ef56f652d0" args="()=0" -->
virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_edge.html">Edge</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>edgeIterator</b> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5547c17cfcb42d5607c99761427e57c"></a><!-- doxytag: member="ISurface::constEdgeIterator" ref="ad5547c17cfcb42d5607c99761427e57c" args="() const =0" -->
virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_edge.html">Edge</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>constEdgeIterator</b> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual Point3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a7c441f7cd1ef54146fcf756ef2bf50a7">localToWorldCoords</a> (const Point3 &amp;p) const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual Point3&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a9772fab0f0844c2bff19c6789a298ff0">worldToLocalCoords</a> (const Point3 &amp;p) const =0</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Interface that every 3D object should implement.</p>
<dl class="author"><dt><b>Author:</b></dt><dd>Juan Roberto Cabral Flores &lt;<a href="mailto:roberto.cabral@gmail.com">roberto.cabral@gmail.com</a>&gt; </dd></dl>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ab70567ef2d1f791659441e6d511d5181"></a><!-- doxytag: member="ISurface::ISurface" ref="ab70567ef2d1f791659441e6d511d5181" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ISurface::ISurface </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Default contructor. The classes that implement this interface, should have a default contructor that initiliazes the object with valid values. </p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a91e7fbc0464488d68c3515a17fae1cf2"></a><!-- doxytag: member="ISurface::addFace" ref="a91e7fbc0464488d68c3515a17fae1cf2" args="(const QVector&lt; int &gt; &amp;vertexIndexes)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int ISurface::addFace </td>
          <td>(</td>
          <td class="paramtype">const QVector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>vertexIndexes</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Add a triangle to the object. The triangle is formed by the vertices passed as arguments. The vertices are passed by means of their ID</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">v1</td><td>id of the first vertex that form the triangle. </td></tr>
    <tr><td class="paramname">v2</td><td>id of the first vertex that form the triangle. </td></tr>
    <tr><td class="paramname">v3</td><td>id of the first vertex that form the triangle.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>triangle ID </dd></dl>

<p>Implemented in <a class="el" href="class_subdivision.html#ada33438646e53ae8018140fce1d17ddd">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="acbc361660b6540a54e7756ffa65dcf58"></a><!-- doxytag: member="ISurface::addVertex" ref="acbc361660b6540a54e7756ffa65dcf58" args="(const Point3 &amp;point)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int ISurface::addVertex </td>
          <td>(</td>
          <td class="paramtype">const Point3 &amp;&#160;</td>
          <td class="paramname"><em>point</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Add point to object. The point added is in local coordinates ( i.e. relative to object's origin.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">point</td><td>point to add to the object. The point is in local coords.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>ID of the new point. </dd></dl>

<p>Implemented in <a class="el" href="class_subdivision.html#a04255aedafb7a45b5a6790af7cda4bc6">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a67e08909ca9ac1a6514d21601586e084"></a><!-- doxytag: member="ISurface::addVertex" ref="a67e08909ca9ac1a6514d21601586e084" args="(Vertex *v)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int ISurface::addVertex </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_vertex.html">Vertex</a> *&#160;</td>
          <td class="paramname"><em>v</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Add vertex v to this object. The object will mantain the reference to the vertex. Do not delete the vertex while the object has a reference to it.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">v</td><td>vertex to add to the object.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the id of the vertex inside the object. </dd></dl>

<p>Implemented in <a class="el" href="class_subdivision.html#a33b191b665e6836ddb731efc957c648b">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a67a32caec0e8d348a10eecf6f7c2c3a4"></a><!-- doxytag: member="ISurface::constFaceIterator" ref="a67a32caec0e8d348a10eecf6f7c2c3a4" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt;<a class="el" href="class_face.html">Face</a>&gt; ISurface::constFaceIterator </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return a const iterator over the faces that contained in this object. </p>

<p>Implemented in <a class="el" href="class_subdivision.html#a7c5a364941fe1368f8671872c7d34fb7">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="affbd60ef9ed26e01b55c28facc8bdd8b"></a><!-- doxytag: member="ISurface::displace" ref="affbd60ef9ed26e01b55c28facc8bdd8b" args="(const Point3 &amp;delta)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ISurface::displace </td>
          <td>(</td>
          <td class="paramtype">const Point3 &amp;&#160;</td>
          <td class="paramname"><em>delta</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Move the object. Move the object relative to the actual position.</p>
<p>new_position = current_position + delta.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">delta</td><td>Point that contains the amount of displacement for each axis. </td></tr>
  </table>
  </dd>
</dl>

<p>Implemented in <a class="el" href="class_subdivision.html#aa8e37223285fbc59636cd219e8e7e18c">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a42b6325545e89a172a7d0585b9f03f2d"></a><!-- doxytag: member="ISurface::faceIterator" ref="a42b6325545e89a172a7d0585b9f03f2d" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt;<a class="el" href="class_face.html">Face</a>&gt; ISurface::faceIterator </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns a face iterator to traverse over all the faces of this object. </p>

<p>Implemented in <a class="el" href="class_subdivision.html#a7eeefe30c943e6a878edb68cd1e006d6">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a571d61b4e42945db601315b308ce0480"></a><!-- doxytag: member="ISurface::getBoundingBox" ref="a571d61b4e42945db601315b308ce0480" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const <a class="el" href="classgeometry_1_1_a_a_b_b.html">geometry::AABB</a>&amp; ISurface::getBoundingBox </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the bounding box of the object. </p>

<p>Implemented in <a class="el" href="class_subdivision.html#a60c478c5364fe2120ac8c7bac5073572">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="aa10cc801aa8f0ce9ccfada6a201b8978"></a><!-- doxytag: member="ISurface::getColor" ref="aa10cc801aa8f0ce9ccfada6a201b8978" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_color.html">Color</a> ISurface::getColor </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Gets the object base color. Used as vertex color, line color, shading color, etc.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>color of the object. </dd></dl>

<p>Implemented in <a class="el" href="class_subdivision.html#af479cfc0f8330c799452b8c6042310f7">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="af65eb6a9c34d69b4901f4ec0b38ba575"></a><!-- doxytag: member="ISurface::getFace" ref="af65eb6a9c34d69b4901f4ec0b38ba575" args="(int index)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_face.html">Face</a>* ISurface::getFace </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the face at the position index. </p>

<p>Implemented in <a class="el" href="class_subdivision.html#a27a889e1a1aad983482b2c4952982580">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a6b377d95b29a4605f8788df6a4a10aa1"></a><!-- doxytag: member="ISurface::getNumFaces" ref="a6b377d95b29a4605f8788df6a4a10aa1" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int ISurface::getNumFaces </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the number of faces that the object has.</p>
<p>TODO: This may not belong here as is specific to mesh surfaces. </p>

<p>Implemented in <a class="el" href="class_subdivision.html#a7ba1c88da6ba03e7e0432d7162e509e2">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a494fde936bf15d00021ef4ed6ea50917"></a><!-- doxytag: member="ISurface::getNumVertices" ref="a494fde936bf15d00021ef4ed6ea50917" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int ISurface::getNumVertices </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Gets the number of vertices </p>

<p>Implemented in <a class="el" href="class_subdivision.html#abefbe6ad2b287feffd906328dd5dce66">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a325e898d81895706e22e331a778beafa"></a><!-- doxytag: member="ISurface::getPosition" ref="a325e898d81895706e22e331a778beafa" args="(float *x, float *y, float *z) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ISurface::getPosition </td>
          <td>(</td>
          <td class="paramtype">float *&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float *&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float *&#160;</td>
          <td class="paramname"><em>z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get the object's position.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>Object x-axis position. </td></tr>
    <tr><td class="paramname">y</td><td>Object y-axis position. </td></tr>
    <tr><td class="paramname">z</td><td>Object z-axis position. </td></tr>
  </table>
  </dd>
</dl>

<p>Implemented in <a class="el" href="class_subdivision.html#a0a42b77c8e98ba4c92f99c17a20c41c5">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a3f218240367586c7ff7078e991a06060"></a><!-- doxytag: member="ISurface::getPosition" ref="a3f218240367586c7ff7078e991a06060" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual Point3 ISurface::getPosition </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get the object's position. Overloaded method.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>position of the object. </dd></dl>

<p>Implemented in <a class="el" href="class_subdivision.html#adc3a82a47ea0e77a3778f58a882ffad1">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="aec9d88f3e524a8c7744643f7ad2a8a6d"></a><!-- doxytag: member="ISurface::getVertex" ref="aec9d88f3e524a8c7744643f7ad2a8a6d" args="(int iid)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_vertex.html">Vertex</a>* ISurface::getVertex </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>iid</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the vertex with the instance ID iid. </p>

<p>Implemented in <a class="el" href="class_subdivision.html#ac91ef5c002950d9cd26593a3984a4bcd">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="af86f540d2ce7ff69a8fa0f691b43854e"></a><!-- doxytag: member="ISurface::getVertex" ref="af86f540d2ce7ff69a8fa0f691b43854e" args="(int iid) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const <a class="el" href="class_vertex.html">Vertex</a>* ISurface::getVertex </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>iid</em></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the vertex with the instance ID iid. </p>

<p>Implemented in <a class="el" href="class_subdivision.html#a665c20a74ff36151277212f132f75ce4">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a6e0d4a5e3fcc3d79d02ed7924fb7faee"></a><!-- doxytag: member="ISurface::hasChanged" ref="a6e0d4a5e3fcc3d79d02ed7924fb7faee" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool ISurface::hasChanged </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get a buffer with all the vertex data. This data is used to render the mesh using VBOs.</p>
<p>The function return a pointer to the buffer data. The pointer should be considerated temporal (do not store the pointer for later use). This is because when inserting new vertices to the mesh, a new allocation may be needed.</p>
<p>The function also returns the number of vertices contained in the buffer. Get a buffer with all the normal data. This data is meant to be used to create VBOs.</p>
<p>The function return a pointer to the buffer data. The pointer should be considerated temporal (do not store the pointer for later use). This is because when inserting new vertices to the mesh, a new allocation may be needed.</p>
<p>The function also returns the number of vertices contained in the buffer. </p>

<p>Implemented in <a class="el" href="class_subdivision.html#a0949f2d5f7b0b9ebdf6ee4fd56b31923">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="ae78b51ad4cf1dd2eea18ed5b386d80f4"></a><!-- doxytag: member="ISurface::iid" ref="ae78b51ad4cf1dd2eea18ed5b386d80f4" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual uint ISurface::iid </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Instance id of the surface </p>

<p>Implemented in <a class="el" href="class_subdivision.html#a606080f14b61791afa2e670890623e60">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a62c36e72a939cc47af4fb7f5a8e7129b"></a><!-- doxytag: member="ISurface::isSelected" ref="a62c36e72a939cc47af4fb7f5a8e7129b" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool ISurface::isSelected </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the selected state of the object.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if the object is selected, otherwise, false. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="class_i_surface.html#a308ae3492b08adf81eb71603cc9c9e77">setSelected</a> </dd></dl>

<p>Implemented in <a class="el" href="class_subdivision.html#a06fde78c20ca85a1bd8c7c4e99c286b6">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a7c441f7cd1ef54146fcf756ef2bf50a7"></a><!-- doxytag: member="ISurface::localToWorldCoords" ref="a7c441f7cd1ef54146fcf756ef2bf50a7" args="(const Point3 &amp;p) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual Point3 ISurface::localToWorldCoords </td>
          <td>(</td>
          <td class="paramtype">const Point3 &amp;&#160;</td>
          <td class="paramname"><em>p</em></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This function applies a transformation to convert a coordinate in the local coordinate system to the world coordinate system.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">p</td><td>point to convert to world coordinate system.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a point in the world coornidate system. </dd></dl>

<p>Implemented in <a class="el" href="class_subdivision.html#acd401d3e82aaf483885b9d3ac0a14f13">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a8f10a9bc973d60aba70cfc51b8a28f33"></a><!-- doxytag: member="ISurface::orientation" ref="a8f10a9bc973d60aba70cfc51b8a28f33" args="(float &amp;rotX, float &amp;rotY, float &amp;rotZ)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ISurface::orientation </td>
          <td>(</td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>rotX</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>rotY</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float &amp;&#160;</td>
          <td class="paramname"><em>rotZ</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the orientation of the object in Euler angle </p>

<p>Implemented in <a class="el" href="class_subdivision.html#aa0ad967a3b4836bf644685bff65f7180">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="af50649c2dc98f48ce58ab67700a58952"></a><!-- doxytag: member="ISurface::removeFace" ref="af50649c2dc98f48ce58ab67700a58952" args="(int id)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ISurface::removeFace </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>id</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Remove the triangle from the object. The points or vertices that compound the triangle are not removed from the object. The points could be rendered acording to the drawing mode.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">id</td><td>triangle ID to remove. </td></tr>
  </table>
  </dd>
</dl>

<p>Implemented in <a class="el" href="class_subdivision.html#ad09f162899628f6f6f26760a1f77bbc5">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="acb9d7fe923011c6fabe64499e2fad39c"></a><!-- doxytag: member="ISurface::removeVertex" ref="acb9d7fe923011c6fabe64499e2fad39c" args="(int id)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ISurface::removeVertex </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>id</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Remove a point from the object. If the point form part of a triangle then that triangle should be removed from the object.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">id</td><td>ID of the point to delete. </td></tr>
  </table>
  </dd>
</dl>

<p>Implemented in <a class="el" href="class_subdivision.html#a397d5b1e2cb9c75b827d026d82bff0b8">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a20192dad54574165894e55cfe0dcb857"></a><!-- doxytag: member="ISurface::replaceFace" ref="a20192dad54574165894e55cfe0dcb857" args="(int index, const QVector&lt; int &gt; &amp;vertexIndexList)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ISurface::replaceFace </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const QVector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>vertexIndexList</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Replace a triangle with new indices to existing points. </p>

<p>Implemented in <a class="el" href="class_subdivision.html#a1686d1ab48a093bc3a689adfeec61c8c">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="af199f348a53404b2a9afe4d53320967d"></a><!-- doxytag: member="ISurface::setColor" ref="af199f348a53404b2a9afe4d53320967d" args="(const Color &amp;color)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ISurface::setColor </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_color.html">Color</a> &amp;&#160;</td>
          <td class="paramname"><em>color</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Sets the object base color. Used as vertex color, line color, shading color, etc.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">color</td><td>color of the object. </td></tr>
  </table>
  </dd>
</dl>

<p>Implemented in <a class="el" href="class_subdivision.html#af8533079d416d887dca4b51ae7c24b1e">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a1b2bcf36d9260ff21b27519e6da7a715"></a><!-- doxytag: member="ISurface::setOrientation" ref="a1b2bcf36d9260ff21b27519e6da7a715" args="(float rotX, float rotY, float rotZ)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ISurface::setOrientation </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>rotX</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>rotY</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>rotZ</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Rotate the object. This rotation is applied over the local object axis.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">rotX</td><td>Rotation angle in x-axis. </td></tr>
    <tr><td class="paramname">rotY</td><td>Rotation angle in y-axis. </td></tr>
    <tr><td class="paramname">rotZ</td><td>Rotation angle in z-axis. </td></tr>
  </table>
  </dd>
</dl>

<p>Implemented in <a class="el" href="class_subdivision.html#ac901d2463ec198b49af6250d2ecc833a">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a1a37c46d3bdaf293185528b126d9414f"></a><!-- doxytag: member="ISurface::setPosition" ref="a1a37c46d3bdaf293185528b126d9414f" args="(float x, float y, float z)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ISurface::setPosition </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Set the object's position.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>Object's x position </td></tr>
    <tr><td class="paramname">y</td><td>Object's y postion </td></tr>
    <tr><td class="paramname">z</td><td>Object's z position </td></tr>
  </table>
  </dd>
</dl>

<p>Implemented in <a class="el" href="class_subdivision.html#a973635b6b3fdc69d1fa4bc6e7e696df9">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="abf512c806506d38121bd19b5945edfa5"></a><!-- doxytag: member="ISurface::setPosition" ref="abf512c806506d38121bd19b5945edfa5" args="(const Point3 &amp;position)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ISurface::setPosition </td>
          <td>(</td>
          <td class="paramtype">const Point3 &amp;&#160;</td>
          <td class="paramname"><em>position</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Set the object's position. Overloaded method.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">position</td><td>Object position. </td></tr>
  </table>
  </dd>
</dl>

<p>Implemented in <a class="el" href="class_subdivision.html#a27cf8a3764126aab4bcd34ea2a075072">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a308ae3492b08adf81eb71603cc9c9e77"></a><!-- doxytag: member="ISurface::setSelected" ref="a308ae3492b08adf81eb71603cc9c9e77" args="(bool val)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ISurface::setSelected </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>val</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Mark the object as selected. This property is used by the renderers to mark selected objects (for example draw a bounding box around the object)</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">val</td><td>pass true to set the object as selected </td></tr>
  </table>
  </dd>
</dl>

<p>Implemented in <a class="el" href="class_subdivision.html#ad5338cd947c264e58a34d4acd48a700d">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a852184671d98db33f9160b40f5aa5e76"></a><!-- doxytag: member="ISurface::vertexIterator" ref="a852184671d98db33f9160b40f5aa5e76" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt;<a class="el" href="class_vertex.html">Vertex</a>&gt; ISurface::vertexIterator </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns a vertex iterator to traverse over all the vertices in this object. </p>

<p>Implemented in <a class="el" href="class_subdivision.html#a57e134c89c965fb6038f180c89bb496d">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a9772fab0f0844c2bff19c6789a298ff0"></a><!-- doxytag: member="ISurface::worldToLocalCoords" ref="a9772fab0f0844c2bff19c6789a298ff0" args="(const Point3 &amp;p) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual Point3 ISurface::worldToLocalCoords </td>
          <td>(</td>
          <td class="paramtype">const Point3 &amp;&#160;</td>
          <td class="paramname"><em>p</em></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This function applies a transformation to convert a coordinate in the world coordinate system to the local coordinate system.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">p</td><td>point to convert to local coordinate system.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a point in the local coordinate system. </dd></dl>

<p>Implemented in <a class="el" href="class_subdivision.html#a02f1ff1defc98f28bc58cc6f3419bead">Subdivision</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>engine/include/<a class="el" href="_i_surface_8h_source.html">ISurface.h</a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>



<hr class="footer"/><address class="footer"><small>
Generated on Sat Aug 27 2011 15:38:53 for QSculpt by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.5.1
</small></address>

</body>
</html>
